import 'package:flutter/material.dart';

import 'package:wis_flutter/index.dart';        // wis flutter 组件 

// 查询  页面  示例
class SearchPage extends StatefulWidget {

    SearchPage({
        Key key,
    }) : super(key: key);

    @override
    _SearchPageState createState() => new _SearchPageState();
}

class _SearchPageState extends State<SearchPage> {

  // 定义 表单 字段 
  GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
  TextEditingController _nameController =  TextEditingController();           // 文本框
  


    // 列表 数据 初始值
    List<Map> newList = <Map>[
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        // "content":"内容11",
        "titleBtnText":"进行中",
        "titleBtnColor": Color.fromRGBO(45,183,245,1),   
        "buttonList":[
          {
            "label":"到供应商",
            "onClick":(option){
              // print(option);
            }
          },
          {
            "label":"收件箱",
            "icon":Colors.brown,
            "onClick":(option){
              // print(option);
            }
          }                                                      
        ],                         
        "children":[
          {
            "label":"开始时间",
            "value":'222',  
          },
          {
            "label":"结束时间",
            "value":"2026年01月08日 21:09:11",  
          }       
        ]
      },
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      }, 
      {
        "title":"初始值11",
        "content":"内容11",
        "titleBtnText":"已完成",
        "titleBtnColor": Color.fromRGBO(25,190,107,1),
      },                                                                            
    ];
 


    @override
    void initState() {
      super.initState();
 
    }

    @override
    void dispose() {
      super.dispose();
    }


    // 查询回调
    void _onSearch(option){
        print(option["value"]);  // 查询值

        // 修改 查询值
        setState(() {
          newList=[
                {
                  "title":"新的标题111",
                  "content":"内容qqq",
                },
                {
                  "title":"新的标题222",
                  "content":"内容yyy",
                }
          ];
        });
    }


    // 行点击 事件
    void _onRowClick(option){
      print(option);
    }

    // 筛选点击
    void _onFilter(option){
      print(option);

      setState(() {
        newList=[
          {
            "title":"刷选的额",
            "content":"内容qqq",
          },
        ];
      });

    }

    // 头部按钮切换
    void _onHeadChange(option){
      print(option);
    }


    // 上拉刷新 
    Future<bool> _onRefreshPullUp() async{

      //模拟 耗时3秒
      await new Future.delayed(new Duration(seconds: 3));

      // 模拟数据
      setState(() {
        newList.addAll([
          {
            "title":"上拉拿到的数据",
            "content":"上拉拿到的数据",
          },           
        ]);
      });


      // 返回 true 进入下次刷新队列，返回 false 只刷新第一次 
      return true;
    }


    // 下拉刷新
    Future<bool> _onRefresh() async{

      //模拟 耗时3秒
      await new Future.delayed(new Duration(seconds: 3));
      print("刷新成功");

      // 返回 true 取消加载的 圆圈
      return true;
    }    
    

    // 加载更多
    Future<bool> _onLoadingmore() async{

      //模拟 耗时3秒
      await new Future.delayed(new Duration(seconds: 3));
      print("加载成功");

      // 返回 true 取消加载的 圆圈
      return true;
    }     
    


    @override
    Widget build(BuildContext context) {
      return Scaffold(
          resizeToAvoidBottomInset:false,
          appBar: AppBar( title: const Text('查询页') ),  // 头部导航条          
          body: WisSearchPage(
              label:"查询...",
              data: newList,
              // 默认按钮配置
              defaultClickConfig:{
                "text":"详情",
                "icon": Icons.chevron_right
              },
              singleChoice:false,   // 单选  默认 false
              checkbox:true,       //  是否有checkbox 默认 false
              // 过滤数据
              filterData:[
                {
                  "type":"mark",
                  "title":"是否已读",
                  "children":[
                    {
                      "id":1,
                      "value":"已读"
                    },
                    {
                      "id":2,
                      "value":"未读"
                    }                 
                  ]
                },
                {
                  "type":"status",
                  "title":"状态",
                  "multiple": false,    // 是否多选
                  "children":[
                    {
                      "id":1,
                      "value":"状态1"
                    },
                    {
                      "id":2,
                      "value":"状态2"
                    }                   
                  ]
                }                  
              ],
              // 头部按钮
              headPopupMenu:[
                {
                  "value":"1",
                  "label":"在线"
                },
                {
                  "value":"2",
                  "label":"离线"
                },
              ],
              // 自定义 按钮 
              customButton:[
                RaisedButton(
                  color: Colors.blue,
                  child: new Text('自定义按钮1'),
                  onPressed: () {
                    // print(111);
                  },
                ),
                RaisedButton(
                  color: Colors.blue,
                  child: new Text('自定义按钮2'),
                  onPressed: () {
                    // print(222);
                  },
                ) 
              ],
              // 查询页  自定义 编辑页面
              htmlPage:{
                "title": "编辑页面",
                "onsubmit":(){
                  // 提交 返回事件
                  print("提交 返回事件11");
                },
                "child": Container(
                  child: Form(
                    key: _formKey,
                    child: ListView(
                        padding: EdgeInsets.fromLTRB(0,2,0,62),
                        children: <Widget>[

                            // 单行文本
                            WisTextForm(
                              controller: _nameController,   // 表单名
                              label:'单行文本输入框',
                              //readOnly:true,                 // 只读
                              validator: true,                // 必填  
                              validatorText:"必填",       // 必填提示
                              // maxLines:1,                 // 多行文本 默认值1
                              onChanged:(val){
                                // val值改变监听
                                print(val);
                              }
                            ),

                        ],
                    )
                  ),
                )
              },
              onselectAll:(list){
                // checkbox 选中回调
                print(list);
              },
              onSearch:(option){
                  // 查询点击
                  this._onSearch(option);
              },
              onFilter:(option){
                  // 筛选 点击
                  this._onFilter(option);
              },
              onRowClick:(option){
                  // 行数据 列表点击
                  this._onRowClick(option);
              },
              onHeadChange:(option){
                  // 头部按钮切换
                  this._onHeadChange(option);
              },  
              // 下拉刷新
              onRefresh:_onRefresh,
              // 上拉刷新
              // onRefreshPullUp: _onRefreshPullUp,
              // 加载更多
              hideLoadingmore:false,  // 隐藏加载更多
              onLoadingmore: _onLoadingmore

          ),
        );

    }
}


